﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;


namespace ImaginationFactory
{
    // 图像处理库，用于与DLL交互

    //********************************************************************
    //********************************************************************

    #region 特效中的具体特效
    //镜像枚举
    public enum Mirror_Sign
    {
        Left_Right,										//左右镜像
        On_Down,										//上下镜像
    };
    //******************************************************************
    //*****************************************************************

    //单色枚举
    public enum BlackAndWhite
    {
        Decoloration,								//去色		
        Brown,
        Purple,
    };
    //******************************************************************
    //******************************************************************
    //RGB调色通道枚举
    public enum RGB
    {
        RGB_red,
        RGB_green,
        RGB_blue,
    };
    //******************************************************************
    //******************************************************************
    //通道混合器枚举变量
    public enum ColorPassage
    {
        ColorPassage_red,																//红色通道混合器
        ColorPassage_green,																//绿色通道混合器
        ColorPassage_blue,																//蓝色通道混合器
    };


    //********************************************************************
    //********************************************************************
    //  替换的类型
    [StructLayout( LayoutKind.Sequential )]
    public struct RECT
    {
        int x;
        int y;
        int xx;
        int yy;
    };

    #endregion

    //********************************************************************
    //********************************************************************
    // 保存文件的类型
    public enum PictureFileType { NO_FILE_TYPE, FileType_BMP, FileType_JPEG, FileType_PNG, FileType_TIFF };

    //********************************************************************
    //********************************************************************
    //调用方法枚举类型
    public enum KindOfEffect
    {
        Read_image,																			//读取图片 KO
        Rotate_image,																		//旋转图片 KO
        Scale_image,																		//缩放图片 KO
        CutOut_image,																		//剪切图片 KO
        Light_Shade_image,																	//调图片的亮暗度 KO
        Mirror_image,																		//镜像处理 KO
        BlackAndWhite_image,																//单色处理 KO
        Inverse_Color_image,																//反色处理 KO
        RGB_image,																			//RGB色调处理
        Color_Passage_image,																//通道混合器处理
        GussianBlur_image,																	//高斯模糊
        GT_Equal_image,																		//均衡化
        ColorContrats_image,																//对比度        
        Threshold_image,																	//二值化
        Erosion_image,																		//腐蚀
        Dilation_image,																		//膨胀
        InnerEdge_image,																	//内边缘
        OutterEdge_image,																	//外边缘
        Opening_image,																		//开运算
        Closing_image,																		//闭运算        
    	Laplacian_image																		//素描画
    };

    //********************************************************************
    //********************************************************************
    //此结构包含上述的枚举类和调用函数所需的变量
    [StructLayout( LayoutKind.Sequential )]
    public struct Parameter
    {
        public KindOfEffect m_Kind;																//上述枚举变量
        //WCHAR									Image_Name[ 100 ];							    //文件名
        // 从下面出问题，因为类型字节数不同
        public int m_ThresHold;					                                                   //二值函数阀值
        public double m_ConstrastValue;                                                         //对比度
        public int m_GuassianMatrixSize;														//卷积算子尺寸
        public int m_GuassianPower;															    //生成卷积算子的参数
        public int m_Angle;																		//旋转角度
        public double Image_height;																//图片高度
        public double Image_width;																//图片宽度
        public double Scale_x;																	//水平方向上的缩放比例
        public double Scale_y;																	//垂直方向上的缩放比例
        public int x1;																			//裁剪左上角的横坐标
        public int y1;																			//裁剪左上角的纵坐标
        public int x2;																			//裁剪右下角的横坐标																
        public int y2;																			//裁剪右下角的纵坐标
        public int Light_Shade;																	// 增加明暗的百分比
        public Mirror_Sign mirror_Sign;															//左右镜像，上下镜像
        public BlackAndWhite blackandwhite;														//单色处理
        public int RGB_m;																		//RGB色调方式值
        public ColorPassage colorpassage;														//通道混合器的方式：红色输出通道、绿色输出通道、蓝色输出通道
        public double ColorPassage_red;															//红色百分比
        public double ColorPassage_green;														//绿色百分比
        public double ColorPassage_blue;														//蓝色百分比
        public RECT rect;																		//矩形区域
        public RGB rgb;																			//RGB色调选择方式
        public IntPtr Image;
    };


    //********************************************************************
    //********************************************************************
}